#include <stdio.h>
#include <stdlib.h>
#include <utmp.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {

struct utmp *utmp_reg;
char terminal[32];
char whoami[32];
int fildes;
char mensaje[256];
char entrada[256];


if (argc != 2) {
  printf("Error en los parámetros de entrada\n %s log_name_destino \n",argv[0]);
  exit(0);
}

while ((utmp_reg = getutent()) != NULL) {
  if (!strcmp(utmp_reg->ut_user, argv[1])) {
  sprintf(terminal, "/dev/%s", utmp_reg->ut_line);
  break;
  }
}
if (utmp_reg == NULL) {
  printf("El usuario %s no está conectado \n", argv[1]);
  exit(0);
}

if ((fildes = open(terminal, O_RDWR)) < 0) {
  perror("Error abriendo el terminal");
  exit(1);
}

strcpy(whoami, getenv("LOGNAME"));
sprintf(mensaje, "%s te envía un mensaje\07\07\n", whoami);
write(fildes, mensaje, strlen(mensaje));

while (gets(entrada) != NULL) {
  write(fildes, entrada, strlen(entrada));
  write(fildes,"\n",1);
}
close(fildes);
}
